“Unified communication” (UC) services or unified communications and collaboration services (UCC) describe a cloud-based integration of real-time, enterprise-wide communication services (e.g., instant messaging, presence information, voice, mobility features, audio, web & video conferencing, fixed-mobile convergence, desktop sharing, data sharing, call control, and speech recognition) with non-real-time communication services (e.g., unified messaging, integrated voicemail, e-mail, SMS and fax). UC services are not necessarily provided by a single product or vendor, but typically by a set of products that provide a consistent unified user-interface and user-experience across multiple user devices and media-types. Thus, UC services can encompass all forms of communications that are exchanged via a network or multiple connected networks, whether directed as one-to-one communications or multicast/broadcast communications from one to many. In other words, UC services allow a user to send and receive the same type of communications on a variety of different media. For example, the user can receive a voicemail message and choose to access it through e-mail, a cell phone or another medium. Additionally, if the sender is online and currently accepts calls, a response to the voicemail can be sent immediately through yet another medium, such as text chat or video call. Otherwise, the response may be sent as a non-real-time message that can be accessed through a variety of media. These UC services are typically provided via a cloud-based system in order to enhance the ability to integrate, update, modify and manage the various types of communication services.
Traditional legacy systems have significant challenges in terms of their scalability and redundancy characteristics for providing UCC or UC services. For example, such systems only provide for discrete hardware nodes at different locations and, if failure of a single node occurs, the entire system could stop working. Also, the limited feature set and networking capabilities of these systems restrict the amount of available expansion and user mobility. The enormous level of complexity of such legacy systems, combined with the cumbersome hardware requirements, makes them costly to own and maintain and undesirable for a modern IT environment. Conventional solutions are stateless “micro-services” in which the client submits enough information in each request to the server application for the server application to service the request, so that the server application does not have to maintain data after servicing each request. That approach has drawbacks for organizations maintaining existing software engineered around a complex hierarchy of interdependent state machines. It may require significant rewrite of a codebase that has been developed and maintained over years and in turn, incur a drop of performance of one to two orders of magnitude.